﻿#---------------------------------
# Quick Reference
#---------------------------------
-- Script
local roll_A             = self:GetRandam_Int(1, 100)
local roll_B             = self:GetRandam_Int(1, 100)
local roll_C             = self:GetRandam_Int(1, 100)
local roll_D             = self:GetRandam_Int(1, 100)
local roll_E             = self:GetRandam_Int(1, 100)
local number             = self:GetNumber(0)

-- Self
local self_stamina       = self:GetSp(TARGET_SELF)
local self_hp_percent    = self:GetHpRate(TARGET_SELF)
local self_Is2H          = self:IsBothHandMode(TARGET_SELF)
local self_RightWeapon   = self:GetEquipWeaponIndex(ARM_R)
local self_LeftWeapon    = self:GetEquipWeaponIndex(ARM_L)

-- Enemy
local enemy_distance     = self:GetDist(TARGET_ENE_0)
local enemy_stamina      = self:GetSp(TARGET_ENE_0)
local enemy_hp_percent   = self:GetHpRate(TARGET_ENE_0)
local enemy_IsGuarding   = self:IsTargetGuard(TARGET_ENE_0)
local enemy_Is2H         = self:IsBothHandMode(TARGET_ENE_0)

local enemy_LightAttack  = self:HasSpecialEffectId(TARGET_ENE_0, 150000)
local enemy_HeavyAttack  = self:HasSpecialEffectId(TARGET_ENE_0, 150001)
local enemy_SkillAttack  = self:HasSpecialEffectId(TARGET_ENE_0, 150002)
local enemy_DashAttack   = self:HasSpecialEffectId(TARGET_ENE_0, 150003)
local enemy_GuardAttack  = self:HasSpecialEffectId(TARGET_ENE_0, 150004)
local enemy_AmmoAttack   = self:HasSpecialEffectId(TARGET_ENE_0, 150005)
local enemy_ItemAttack   = self:HasSpecialEffectId(TARGET_ENE_0, 150006)
local enemy_Gesture      = self:HasSpecialEffectId(TARGET_ENE_0, 150007)
local enemy_SpellCast    = self:HasSpecialEffectId(TARGET_ENE_0, 150008)
local enemy_DrinkFlask   = self:HasSpecialEffectId(TARGET_ENE_0, 150009)

#---------------------------------
# Conditions
#---------------------------------
IsSearchTarget( <target> )
- Return true if target is current search target

GetNpcThinkParamID()
- Return Think ID in use

IsInsideTarget( <target>, <dir>, <value> )
- Return true if inside target

IsInsideTargetRegion( <target>, <msb event id> )
- Return true if target is in msb event region

IsInsideTargetEx( <target>, <2nd target>, <dir>, <value>, <value> )
- 

IsTargetGuard( <target> )
- Return true if target is guarding

IsFinishTimer( <value> )
- Return true if timer is finished

IsBothHandMode( <target> )
- Return true if target is two-handing weapon

GetDist( <target> )
- Return distance from target

GetRandam_Int( <min>, <max> )
- Return random integer between min and max

GetHpRate( <target> )
- Return HP decimal of current target

GetMp( <target> )
- Return FP of current target

GetSp( <target> )
- Return stamina of current target

GetExcelParam( <param> )
- Return param field

GetEventRequest()
- Return event request ID

HasSpecialEffectId( <target>, <speffect id> )
- Return true if target has specified speffect

#---------------------------------
# Commands
#---------------------------------
REGIST_FUNC( <goal>, <func>, <goal>)
-

Common_Battle_Activate( <goal>, <func>, <var>, <var>, <var>, <var>)
- 

NPC_Approach_Act_Flex(<ai>, <goal>, <var>, <var>, <var>, <var>, <var>, <var>, <var>)
- 

Init_Pseudo_Global( <goal> )
- 

Common_Clear_Param( <var>, <var>, <var> )
- 

SetStringIndexedNumber( <string>, <value> )
- Set variable strings to a value

AddSubGoal( <goal>, <value>, <anim id>, <target>, <value>, <dir type>, <value> )
- Add a sub goal to the current order

#---------------------------------
# References
#---------------------------------
<target>:
 TARGET_NONE = -2
 TARGET_SELF = -1
 TARGET_ENE_0 = 0
 TARGET_FRI_0 = 10
 TARGET_EVENT = 20
 TARGET_LOCALPLAYER = 21
 TARGET_LowHp_Friend = 22
 TARGET_INTERMEDIATE_POINT = 23
 TARGET_TEAM_FORMATION = 24
 TARGET_TEAM_LEADER = 25
 TARGET_MEMORIED_RELATIVE_TARGET = 26
 TARGET_ENEMY_AVATOR_HOME = 50
 TARGET_PERSONAL_AVATOR_HOME = 51
 TARGET_TYPE_BOIDS_COMMAND = 60
 
<string>:
 NPC_PointFrontWall
 Dist_Rolling
 Dist_BackStep
 AddDistWalk
 AddDistRun
 
<dir>:
 AI_DIR_TYPE_CENTER = 0
 AI_DIR_TYPE_F = 1
 AI_DIR_TYPE_B = 2
 AI_DIR_TYPE_L = 3
 AI_DIR_TYPE_R = 4
 AI_DIR_TYPE_ToF = 5
 AI_DIR_TYPE_ToB = 6
 AI_DIR_TYPE_ToL = 7
 AI_DIR_TYPE_ToR = 8
 AI_DIR_TYPE_Top = 9
 
#---------------------------------
# Note
#---------------------------------
Add new goals to goal_list.lua. This is required for the new AI to function.